您好,欢迎来到达州工业云! 平台首页 企业驾驶舱 帮助中心 企业登录 企业注册

HI,欢迎使用达州工业云平台!

账号必须大于2位

创新资源平台
服务平台首页>专利库>专利详情

石纹纸染图形的计算机仿真方法

  • 申请号:CN201210018768.2 申请公布号: CN102609577B
  • 申请日: 2012-01-20 申请公布日: 2014-07-02
  • 申请(专利权)人: 专利代理机构: 天津市北洋有限责任专利代理事务所
  • 分类号:G06F17/50

专利介绍

本发明公开了一种石纹纸染图形的计算机仿真方法,结合流体力学模拟颜料的流动过程,其模拟通过流体流动过程中的任意给定时刻对流体状态给定一个数学描述来实现;以及利用矢量图技术实现石纹纸染图形的输出,与现有方法相比,本发明的石纹纸染图形的计算机仿真方法,不仅能够实现石纹纸染的计算机仿真,而且仿真结果能够最大程度地接近实际的石纹纸染技艺所得到的图形效果,仿真度高。
1.一种石纹纸染图形的计算机仿真方法,结合流体力学模拟颜料的流动过程,其模拟通过流体流动过程中的任意给定时刻对流体状态给定一个数学描述来实现;以及利用矢量图技术实现石纹纸染图形的输出,其特征在于,该方法包括以下步骤:步骤一,基于流体力学理论构建速度场:▽·u=0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0(1) ∂ u ∂ t = - ( u · ▿ ) u - 1 ρ ▿ p + v ▿ 2 u + f - - - ( 2 ) ]]>其中,u是流体速度,ρ是流体密度,p是压强项,f是外力,ν是粘性系数;将速度域定义在一个n×n的均匀网格上,通过中心差分联立求解方程(1)和(2)得到速度场的变化;步骤二,流体边界追踪与优化:用矢量图绘制流体边界,当添加外力后,随着速度场的不断变化,跟踪颜料边界的运动情况:采用双线性插值方法计算边界结点i处的速度u(pi),进而计算得到边界结点i在下一时刻的新位置pi+1u(pi)=t2(s2*ui,j+s1*s1*ui,j+1)+t1(s2*ui+1,j+s1*ui+1,j+1)pi+1=pi+u(pi)·Δt其中,pi是采样点的坐标,pi+1是采样点下一时刻的坐标,s1、s2、t1、t2为双线性插值的比例系数;ui+1,j,ui,j+1,ui+1,j,分别在nxn网格不同位置处结点的流体速度:ui,j代表位于均匀网格中i,j处结点i的流体速度;ui+1,j代表位于均匀网格中i+1,j处结点i的流体速度;ui,j+1代表均匀网格中i,j+1处结点i的的流体速度;步骤三,边界填充与输出:基于OpenGL采用模板缓存的模板测试方法填充流体轮廓得到实心的流体,采用SVG格式输出图形;步骤四,单一流体到多种流体的扩展:将单一流体模拟扩展到多种流体模拟,需要考虑不同流体的粘性特征,当用户添加新的流体时,通过对流体轮廓的初始边界结点添加向外部周围扩散的速度v,速度v的取值受流体的固有粘性系数值visc的影响,即:v(i)=(1-visc)*V其中,v表示流体边界结点i在速度网格上的速度,V表示粘性系数值,visc为1时的速度。
2.如权利要求1所述的石纹纸染图形的计算机仿真方法,其特征在于,所述方法还包括以下步骤:在流体运动过程中,通过控制结点距离阈值d来控制边界结点的增减,保持流体边界的平滑性,基于局部边界的弯曲程度来调节距离阈值d,确保两相邻结点间的距离在d与d/2之间,即在轮廓平滑的地方减少结点,在边界弯曲的地方增加结点,边界结点i处的距离阈值di的计算公式为: d i = d max c i curvature ]]>其中,dmax表示流体边界相邻结点间的最大距离,ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="211"/>为结点i处的曲率。技术领域
本发明涉及计算机图像仿真技术,尤其涉及利用计算机模拟流体流动绘制具有艺术效果纹理的仿真技术实现方法。
背景技术
石纹纸染(Paperxa0marbling)是一种古老的阿拉伯国家最早发明的纸艺形式,它是一种在水表面设计图形的方法,这种纸艺技术主要是在水或粘稠液体表面操作流动的颜料来形成各种样式,如可以产生光滑的类似石纹等形式的精美图案,并将图案转移到纸张或织物的表面。近年来,人们用这些石纹纸张来装饰书籍、图片背景、贴图等。由于传统的石纹纸染技术要求在操作的整个过程中不能有一丝差错,一旦有所失误,不但要重新开始,而且会浪费大量的颜料。因此,如果能通过计算机实现纸艺制作效果的仿真是很有意义的,这样一来,不仅使制作成本降低,并且能够减少资源浪费和环境污染。近年来,已有一些通过计算机仿真流体流动来绘制具有艺术效果的纹理的研究。目前的仿真方法有三类:基于物理的二维流体模型的仿真方法、矢量图的仿真方法和基于图形坐标变换函数的仿真方法。文献[1]运用流体动力学知识来模拟流体运动实现了绘制类似石纹的杂乱无章的图形的功能,但这种方法在绘制开始前需要初始化所有的运动路径,难以做到实时绘制;文献[2]提出了一种基于GPU(Graphicsxa0Processingxa0Unit)的实时绘制技术,但生成的图形边界比较模糊。文献[3]、[4]的方法可以生成清晰边界:其中,文献[3]通过在欧拉网格上使用B样条曲线插入方法来生成清晰边界,而文献[4]采用向量图的方式来绘制流体,根据局部边界的弯曲度和速度的湍流度来控制边界,然而这两种方法只能生成无法预测的纹理效果。文献[5]对文献[3]进行扩展,结合CIP(ConstrainedInterpolationxa0Profile)插值方法和MacCormack方法来求解表示速度场和流体密度场的NS(Navier-Stokes)方程,得到了清晰的流体边界,然而在模拟多种流体流动时,每一流体都需构建网格,当不断增加流体时,计算量会大大增加。文献[6]通过数学表示方法,即通过一些图形的坐标变换函数来绘制一些具有特定特征的图形。这种方法生成速度较快,但是它没有反映出颜料的流动特性。参考文献:[1]Maoxa0X,Suzukixa0T,Imamiyaxa0A.AtelierM:axa0physicallyxa0basedxa0interactivesystemxa0forxa0creatingxa0traditionalxa0marblingxa0textures.In:Proceedingsxa0ofxa0thexa01stinternationalxa0conferencexa0onxa0Computerxa0graphicsxa0andxa0interactivexa0techniquesxa0inAustralasiaxa0andxa0Southxa0Eastxa0Asia,Newxa0York,USA:2003.79-86.[2]Jinxa0X,Chenxa0S,Maoxa0X.Computer-generatedxa0marblingxa0textures:axa0GPU-baseddesignxa0system.IEEExa0computerxa0graphicsxa0andxa0applications,2007,27(2):78-84.[3]Acarxa0R,Boulangerxa0P.Digitalxa0marbling:axa0multiscalexa0fluidxa0model.IEEETransactionsxa0onxa0Visualizationxa0andxa0Computerxa0Graphics,2006,12:600-614.[4]Andoxa0R,Tsurunoxa0R.Vectorxa0fluid:axa0vectorxa0graphicsxa0depictionxa0ofxa0surfacexa0flow.In:Proceedingsxa0ofxa0thexa08thxa0Internationalxa0Symposiumxa0onxa0Non-PhotorealisticAnimationxa0andxa0Rendering.Newxa0York,USA:2010.129-135.[5]Xuxa0J,Maoxa0X,Jinxa0X.Non-dissipativexa0marbling.IEEExa0Computerxa0Graphicsxa0andApplications,2008,28(2):35-43.[6]Luxa0S,Jaffer,A.,Jinxa0X,Zhaoxa0H,MaoX.Mathematicalxa0Marbling.IEEEComputerxa0Graphicsxa0andxa0Applications,2011,99:1-1.
发明内容
基于上述现有技术存在的问题,本发明提出了一种石纹纸染图形的计算机仿真方法,综合流体力学和矢量图技术,利用计算机仿真出生成图形轮廓清晰、完整、实现类似石花纹的具有艺术效果的图案。一种石纹纸染图形的计算机仿真方法,结合流体力学模拟颜料的流动过程,其模拟通过流体流动过程中的任意给定时刻对流体状态给定一个数学描述来实现;以及利用矢量图技术实现石纹纸染图形的输出,该方法包括以下步骤:步骤一,基于流体力学理论构建速度场: ▿ · u = 0 ]]> ∂ u ∂ t = - ( u · ▿ ) u - 1 ρ ▿ p + v ▿ 2 u + f ]]>其中,u是流体速度,ρ是流体密度,p是压强项,f是外力,v是粘性系数。将速度域定义在一个n×n的均匀网格上,通过中心差分联立求解方程(1)和(2)得到速度场的变化步骤二,流体边界追踪与优化:用矢量图绘制流体边界,当添加外力后,随着速度场的不断变化,跟踪颜料边界的运动情况:采用双线性插值方法计算边界结点i处的速度u(pi),进而计算得到边界结点i在下一时刻的新位置pi+1u(pi)=t2(s2*ui,j+s1*s1*ui,j+1)+t1(s2*ui+1,j+s1*ui+1,j+1)xa0xa0xa0xa0(4)pi+1=pi+u(pi)·Δtxa0xa0xa0xa0(5)步骤三,边界填充与输出:基于OpenGL采用模板缓存的模板测试方法填充流体轮廓得到实心的流体,采用SVG格式输出图形;步骤四,单一流体到多种流体的扩展:将单一流体模拟扩展到多种流体模拟。,需要考虑不同流体的粘性特征,当用户添加新的流体时,通过对流体轮廓的初始边界结点添加向外部周围扩散的速度v,速度v的取值受流体的固有粘性系数值visc的影响,即:v(i)=(1-visc)*Vxa0xa0xa0xa0(6)其中,v表示流体边界结点i在速度网格上的速度,V表示粘性系数值,visc为1时的速度。所述在流体运动过程中,通过控制结点距离阈值d来控制边界结点的增减,保持流体边界的平滑性,基于局部边界的弯曲程度来调节距离阈值d,确保两相邻结点间的距离在d与d/2之间,即在轮廓平滑的地方减少结点,在边界弯曲的地方增加结点。边界结点i处的距离阈值di的计算公式为: d i = d max c i curvature ]]>其中,dmax表示流体边界相邻结点间的最大距离。ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="193"/>为结点i处的曲率。与现有方法相比,本发明的石纹纸染图形的计算机仿真方法,不仅能够能够实现石纹纸染的计算机仿真,而且仿真结果能够最大程度地接近实际的石纹纸染技艺所得到的图形效果,仿真度高。
附图说明
图1为石纹纸染图形的计算机仿真方法整体流程图;图2为双线性插值算法示意图;图3为通过本发明的仿真方法模拟出的无序纹理图形示意图;图4为通过本发明的仿真方法模拟出的花纹理图形示意图;图5为通过本发明的流体边界向周围流动示意图;图6(a)和5(b)分别表示无粘性差别和有粘性差别时的仿真结果。
具体实施方式
以下结合附图,对本发明的具体实施进行详细说明:如图1所示,为本发明的计算机仿真方法整体流程图,该方法主要包括以下步骤:1.构建流体速度场。为了模拟颜料的流动过程,必须在模拟过程中的任意给定时刻对流体的状态有一个数学描述,其中最重要的部分是流体的速度场,速度不仅决定了流体本身是如何进行移动的,同时它也影响着周围相关的流体。目前大部分关于模拟流体的研究都是基于NS方程组的,它描述了流体内部速度和压力的变化及其关系。由于方程是非线性的,精确解无法求取,只能使用离散化的方法近似求解。本发明采用不可压缩流体方程,如下所示: ▿ · u = 0 - - - ( 1 ) ]]> ∂ u ∂ t = - ( u · ▿ ) u - 1 ρ ▿ p + v ▿ 2 u + f - - - ( 2 ) ]]>其中,u是流体速度,ρ是流体密度,p是压强项,f是外力,v是粘性系数。本发明将速度域定义在一个n×n的均匀网格上,通过联立求解方程(1)和(2)得到速度场的变化。2.流体边界追踪及优化矢量图是用数学方法描述的图,任意放大或缩小图形时都不会影响图的清晰度,因此本发明采取基于矢量图的方法来表示流体边界,进而对边界所表示的区域进行填充。首先,初始化流体轮廓边界。在传统的石纹纸染技术中,颜料以接近圆形的形状滴到液体表面,因此选取初始实心圆区域边界上的一些离散点作为该流体的初始的边界结点。当添加外力后,随着速度场的不断变化,需要跟踪颜料边界的运动情况。本发明采用双线性插值方法计算边界结点i处的速度u(pi),具体由公式(3)所示。再根据公式(4)得到边界结点i在下一时刻的新位置pi+1。u(pi)=t2(s2*ui,j+s1*s1*ui,j+1)+t1(s2*ui+1,j+s1*ui+1,j+1)xa0xa0xa0xa0(3)pi+1=pi+u(pi)·Δtxa0xa0xa0xa0(4)Pi是采样点的坐标(x,y),s1,s2,t1,t2为双线性插值的比例系数,如图2所示的线性插值算法示意图。仅仅跟踪初始化的那些边界结点不能很好的描述流体轮廓,因此需要适当的添加新边界结点得到逼真的流体边界。本发明通过控制结点距离阈值d来控制边界结点的增减,遵循的基本原则是确保两相邻结点间的距离在d与d/2之间。为了减少计算量,得到平滑、逼真的流体边界,本发明基于局部边界的弯曲程度来调节距离阈值d,即在轮廓比较平滑的地方减少一些结点,而在边界比较弯曲的地方多增加一些结点。边界结点i处的距离阈值di的计算公式为: d i = d max c i curvature - - - ( 5 ) ]]>其中,dmax表示流体边界相邻结点间的最大距离。ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="193"/>为结点i处的曲率。3.边界填充与输出在任意时刻获得边界结点的位置信息后,可以方便地生成由边界结点组成的多边形,接下来需要填充此多边形区域。本发明基于OpenGL采用模板缓存的模板测试方法填充流体轮廓,得到实心的流体。基于矢量图任意放大或缩小时都不会影响图的清晰度的特性,根据SVG开放标准,采用SVG格式输出图形,使用该方法很好的避免了失真现象。4.单一流体到多种流体的扩展为了像石纹纸染技术一样得到丰富的图形时,仅仅模拟单一流体的绘制是不够的,我们需要将本发明的方法扩展到多种流体流动的模拟上。若采用之前提出的方法,那么不同的流体会有相同的粘性特征,这种做法不符合颜料属性规律。因此,当绘制多种流体时,需要考虑不同流体的粘性特征,为了在视觉上让人们感受到石纹纸染技术,即可以观察到不同颜料流体间的不同属性,本发明为流体添加了固有粘性系数。通过观察不难发现,在视觉效果上一般人们只能观察到轮廓边界附近不同流体间相互作用所产生的影响,故当用户添加新的流体时,可以通过对流体轮廓的初始边界结点添加向外部周围扩散的速度v,如图2所示,速度v的取值受流体的固有粘性系数值visc的影响,即:v(i)=(1-visc)*Vxa0xa0xa0xa0(6)其中,v表示流体边界结点i在速度网格上的速度,V表示粘性系数值,visc为1时的速度,在本文所实现的系统中,V=1。图3(a)和3(b)分别表示无粘性差别和有粘性差别时的仿真结果。本发明主要实现了两种纹理效果图形的流体模拟,一种为杂乱无章的纹理图(图4),一种为类似花等有特定图形效果的图形(图5)。